{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.datasets import load_wine"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wine = load_wine()\n",
    " \n",
    "wine.data\n",
    "wine.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Single Tree:0.7962962962962963 Random Forest:0.9444444444444444\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "#实例化\n",
    "#训练集带入实例化的模型去进行训练，使用的接口是fit\n",
    "#使用其他接口将测试集导入我们训练好的模型，去获取我们希望过去的结果（score.Y_test）\n",
    "from sklearn.model_selection import train_test_split\n",
    "Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)\n",
    " \n",
    "clf = DecisionTreeClassifier(random_state=0)\n",
    "rfc = RandomForestClassifier(random_state=0)\n",
    "clf = clf.fit(Xtrain,Ytrain)\n",
    "rfc = rfc.fit(Xtrain,Ytrain)\n",
    "score_c = clf.score(Xtest,Ytest)\n",
    "score_r = rfc.score(Xtest,Ytest)\n",
    " \n",
    "print(\"Single Tree:{}\".format(score_c)\n",
    "      ,\"Random Forest:{}\".format(score_r)\n",
    "     )\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'\\nlabel = \"RandomForest\"\\nfor model in [RandomForestClassifier(n_estimators=25),DecisionTreeClassifier()]:\\n    score = cross_val_score(model,wine.data,wine.target,cv=10)\\n    print(\"{}:\".format(label)),print(score.mean())\\n    plt.plot(range(1,11),score,label = label)\\n    plt.legend()\\n    label = \"DecisionTree\"\\n \\n'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#目的是带大家复习一下交叉验证\n",
    "#交叉验证：是数据集划分为n分，依次取每一份做测试集，每n-1份做训练集，多次训练模型以观测模型稳定性的方法\n",
    " \n",
    "from sklearn.model_selection import cross_val_score\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=25)\n",
    "rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10)\n",
    " \n",
    "clf = DecisionTreeClassifier()\n",
    "clf_s = cross_val_score(clf,wine.data,wine.target,cv=10)\n",
    " \n",
    "plt.plot(range(1,11),rfc_s,label = \"RandomForest\")\n",
    "plt.plot(range(1,11),clf_s,label = \"Decision Tree\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    " \n",
    "#====================一种更加有趣也更简单的写法===================#\n",
    " \n",
    "\"\"\"\n",
    "label = \"RandomForest\"\n",
    "for model in [RandomForestClassifier(n_estimators=25),DecisionTreeClassifier()]:\n",
    "    score = cross_val_score(model,wine.data,wine.target,cv=10)\n",
    "    print(\"{}:\".format(label)),print(score.mean())\n",
    "    plt.plot(range(1,11),score,label = label)\n",
    "    plt.legend()\n",
    "    label = \"DecisionTree\"\n",
    " \n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rfc_l = []\n",
    "clf_l = []\n",
    " \n",
    "for i in range(10):\n",
    "    rfc = RandomForestClassifier(n_estimators=25)\n",
    "    rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10).mean()\n",
    "    rfc_l.append(rfc_s)\n",
    "    clf = DecisionTreeClassifier()\n",
    "    clf_s = cross_val_score(clf,wine.data,wine.target,cv=10).mean()\n",
    "    clf_l.append(clf_s)\n",
    "    \n",
    "plt.plot(range(1,11),rfc_l,label = \"Random Forest\")\n",
    "plt.plot(range(1,11),clf_l,label = \"Decision Tree\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    " \n",
    "#是否有注意到，单个决策树的波动轨迹和随机森林一致？\n",
    "#再次验证了我们之前提到的，单个决策树的准确率越高，随机森林的准确率也会越高\n",
    "\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9888888888888889 32\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#####【TIME WARNING: 2mins 30 seconds】#####\n",
    " \n",
    "superpa = []\n",
    "for i in range(200):\n",
    "    rfc = RandomForestClassifier(n_estimators=i+1,n_jobs=-1)\n",
    "    rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10).mean()\n",
    "    superpa.append(rfc_s)\n",
    "print(max(superpa),superpa.index(max(superpa))+1)#打印出：最高精确度取值，max(superpa))+1指的是森林数目的数量n_estimators\n",
    "plt.figure(figsize=[20,5])\n",
    "plt.plot(range(1,201),superpa)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.00036904803455582827"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from scipy.special import comb\n",
    " \n",
    "np.array([comb(25,i)*(0.2**i)*((1-0.2)**(25-i)) for i in range(13,26)]).sum()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1872583848\n",
      "794921487\n",
      "111352301\n",
      "1853453896\n",
      "213298710\n",
      "1922988331\n",
      "1869695442\n",
      "2081981515\n",
      "1805465960\n",
      "1376693511\n",
      "1418777250\n",
      "663257521\n",
      "878959199\n",
      "854108747\n",
      "512264917\n",
      "515183663\n",
      "1287007039\n",
      "2083814687\n",
      "1146014426\n",
      "570104212\n"
     ]
    }
   ],
   "source": [
    "rfc = RandomForestClassifier(n_estimators=20,random_state=2)\n",
    "rfc = rfc.fit(Xtrain, Ytrain)\n",
    " \n",
    "#随机森林的重要属性之一：estimators，查看森林中树的状况\n",
    "rfc.estimators_[0].random_state\n",
    " \n",
    "for i in range(len(rfc.estimators_)):\n",
    "    print(rfc.estimators_[i].random_state)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9831460674157303"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#无需划分训练集和测试集\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=25,oob_score=True)#默认为False\n",
    "rfc = rfc.fit(wine.data,wine.target)\n",
    " \n",
    "#重要属性oob_score_\n",
    "rfc.oob_score_#0.9719101123595506\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.88, 0.12, 0.  ],\n",
       "       [0.6 , 0.4 , 0.  ],\n",
       "       [0.48, 0.48, 0.04],\n",
       "       [0.12, 0.24, 0.64],\n",
       "       [0.92, 0.  , 0.08],\n",
       "       [0.  , 1.  , 0.  ],\n",
       "       [0.2 , 0.8 , 0.  ],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.  , 0.  , 1.  ],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.  , 0.04, 0.96],\n",
       "       [0.2 , 0.64, 0.16],\n",
       "       [0.96, 0.04, 0.  ],\n",
       "       [0.  , 0.  , 1.  ],\n",
       "       [0.96, 0.  , 0.04],\n",
       "       [0.4 , 0.44, 0.16],\n",
       "       [0.16, 0.84, 0.  ],\n",
       "       [0.16, 0.76, 0.08],\n",
       "       [0.  , 0.04, 0.96],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.  , 0.04, 0.96],\n",
       "       [0.08, 0.88, 0.04],\n",
       "       [0.08, 0.8 , 0.12],\n",
       "       [0.  , 0.04, 0.96],\n",
       "       [0.04, 0.2 , 0.76],\n",
       "       [0.  , 0.96, 0.04],\n",
       "       [0.08, 0.76, 0.16],\n",
       "       [0.  , 0.08, 0.92],\n",
       "       [0.  , 1.  , 0.  ],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.04, 0.32, 0.64],\n",
       "       [0.12, 0.12, 0.76],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.  , 0.4 , 0.6 ],\n",
       "       [0.8 , 0.04, 0.16],\n",
       "       [0.08, 0.64, 0.28],\n",
       "       [0.16, 0.16, 0.68],\n",
       "       [0.08, 0.08, 0.84],\n",
       "       [0.8 , 0.12, 0.08],\n",
       "       [0.32, 0.68, 0.  ],\n",
       "       [0.  , 0.32, 0.68],\n",
       "       [0.52, 0.48, 0.  ],\n",
       "       [0.04, 0.24, 0.72],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.  , 0.24, 0.76],\n",
       "       [0.  , 0.12, 0.88],\n",
       "       [0.  , 0.96, 0.04],\n",
       "       [0.  , 0.84, 0.16],\n",
       "       [0.6 , 0.28, 0.12],\n",
       "       [0.04, 0.96, 0.  ],\n",
       "       [0.  , 0.04, 0.96],\n",
       "       [1.  , 0.  , 0.  ],\n",
       "       [0.68, 0.16, 0.16]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#大家可以分别取尝试一下这些属性和接口\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=25)\n",
    "rfc = rfc.fit(Xtrain, Ytrain)\n",
    "rfc.score(Xtest,Ytest)\n",
    " \n",
    "rfc.feature_importances_#结合zip可以对照特征名字查看特征重要性，参见上节决策树\n",
    "rfc.apply(Xtest)#apply返回每个测试样本所在的叶子节点的索引\n",
    "rfc.predict(Xtest)#predict返回每个测试样本的分类/回归结果\n",
    "rfc.predict_proba(Xtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    " \n",
    "x = np.linspace(0,1,20)\n",
    " \n",
    "y = []\n",
    "for epsilon in np.linspace(0,1,20):\n",
    "    E = np.array([comb(25,i)*(epsilon**i)*((1-epsilon)**(25-i)) for i in range(13,26)]).sum()      \n",
    "    y.append(E)\n",
    "plt.plot(x,y,\"o-\",label=\"when estimators are different\")\n",
    "plt.plot(x,x,\"--\",color=\"red\",label=\"if all estimators are same\")\n",
    "plt.xlabel(\"individual estimator's error\")\n",
    "plt.ylabel(\"RandomForest's error\")\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    " \n",
    "x = np.linspace(0,1,20)\n",
    " \n",
    "y = []\n",
    "for epsilon in np.linspace(0,1,20):\n",
    "    E = np.array([comb(25,i)*(epsilon**i)*((1-epsilon)**(25-i)) \n",
    "                  for i in range(13,26)]).sum()\n",
    "    y.append(E)\n",
    "plt.plot(x,y,\"o-\",label=\"when estimators are different\")\n",
    "plt.plot(x,x,\"--\",color=\"red\",label=\"if all estimators are same\")\n",
    "plt.xlabel(\"individual estimator's error\")\n",
    "plt.ylabel(\"RandomForest's error\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-10.72900447,  -5.36049859,  -4.74614178, -20.84946337,\n",
       "       -12.23497347, -17.99274635,  -6.8952756 , -93.78884428,\n",
       "       -29.80411702, -15.25776814])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston#一个标签是连续西变量的数据集\n",
    "from sklearn.model_selection import cross_val_score#导入交叉验证模块\n",
    "from sklearn.ensemble import RandomForestRegressor#导入随机森林回归系\n",
    " \n",
    "boston = load_boston()\n",
    "regressor = RandomForestRegressor(n_estimators=100,random_state=0)#实例化\n",
    "cross_val_score(regressor, boston.data, boston.target, cv=10\n",
    "               ,scoring = \"neg_mean_squared_error\"#如果不写scoring，回归评估默认是R平方\n",
    "               )\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['accuracy',\n",
       " 'adjusted_mutual_info_score',\n",
       " 'adjusted_rand_score',\n",
       " 'average_precision',\n",
       " 'balanced_accuracy',\n",
       " 'brier_score_loss',\n",
       " 'completeness_score',\n",
       " 'explained_variance',\n",
       " 'f1',\n",
       " 'f1_macro',\n",
       " 'f1_micro',\n",
       " 'f1_samples',\n",
       " 'f1_weighted',\n",
       " 'fowlkes_mallows_score',\n",
       " 'homogeneity_score',\n",
       " 'mutual_info_score',\n",
       " 'neg_log_loss',\n",
       " 'neg_mean_absolute_error',\n",
       " 'neg_mean_squared_error',\n",
       " 'neg_mean_squared_log_error',\n",
       " 'neg_median_absolute_error',\n",
       " 'normalized_mutual_info_score',\n",
       " 'precision',\n",
       " 'precision_macro',\n",
       " 'precision_micro',\n",
       " 'precision_samples',\n",
       " 'precision_weighted',\n",
       " 'r2',\n",
       " 'recall',\n",
       " 'recall_macro',\n",
       " 'recall_micro',\n",
       " 'recall_samples',\n",
       " 'recall_weighted',\n",
       " 'roc_auc',\n",
       " 'v_measure_score']"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#sklearn当中的模型评估指标（打分）列表\n",
    "import sklearn\n",
    "sorted(sklearn.metrics.SCORERS.keys())#这些指标是scoring可选择的参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import load_boston\n",
    "from sklearn.impute import SimpleImputer#填补缺失值的类\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset = load_boston()\n",
    "dataset#是一个字典\n",
    "dataset.target#查看数据标签\n",
    "dataset.data#数据的特征矩阵\n",
    "dataset.data.shape#数据的结构\n",
    "#总共506*13=6578个数据\n",
    " \n",
    "X_full, y_full = dataset.data, dataset.target\n",
    "n_samples = X_full.shape[0]#506\n",
    "n_features = X_full.shape[1]#13\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>18.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.538</td>\n",
       "      <td>NaN</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>NaN</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>396.9</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>NaN</td>\n",
       "      <td>45.8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.147</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18.7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0     1     2    3      4      5     6       7    8      9     10  \\\n",
       "0      NaN  18.0   NaN  NaN  0.538    NaN  65.2  4.0900  1.0  296.0   NaN   \n",
       "1  0.02731   0.0   NaN  0.0  0.469    NaN  78.9  4.9671  2.0    NaN   NaN   \n",
       "2  0.02729   NaN  7.07  0.0    NaN  7.185  61.1     NaN  2.0  242.0   NaN   \n",
       "3      NaN   NaN   NaN  0.0  0.458    NaN  45.8     NaN  NaN  222.0  18.7   \n",
       "4      NaN   0.0  2.18  0.0    NaN  7.147   NaN     NaN  NaN    NaN  18.7   \n",
       "\n",
       "      11    12  \n",
       "0    NaN  4.98  \n",
       "1  396.9  9.14  \n",
       "2    NaN   NaN  \n",
       "3    NaN   NaN  \n",
       "4    NaN  5.33  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#首先确定我们希望放入的缺失数据的比例，在这里我们假设是50%，那总共就要有3289个数据缺失\n",
    " \n",
    "rng = np.random.RandomState(0)#设置一个随机种子，方便观察\n",
    "missing_rate = 0.5\n",
    "n_missing_samples = int(np.floor(n_samples * n_features * missing_rate))#3289\n",
    "#np.floor向下取整，返回.0格式的浮点数\n",
    " \n",
    "#所有数据要随机遍布在数据集的各行各列当中，而一个缺失的数据会需要一个行索引和一个列索引\n",
    "#如果能够创造一个数组，包含3289个分布在0~506中间的行索引，和3289个分布在0~13之间的列索引，那我们就可以利用索引来为数据中的任意3289个位置赋空值\n",
    "#然后我们用0，均值和随机森林来填写这些缺失值，然后查看回归的结果如何\n",
    " \n",
    "missing_features = rng.randint(0,n_features,n_missing_samples)#randint（下限，上限，n）指在下限和上限之间取出n个整数\n",
    "len(missing_features)#3289\n",
    "missing_samples = rng.randint(0,n_samples,n_missing_samples)\n",
    "len(missing_samples)#3289\n",
    " \n",
    "#missing_samples = rng.choice(n_samples,n_missing_samples,replace=False)\n",
    "#我们现在采样了3289个数据，远远超过我们的样本量506，所以我们使用随机抽取的函数randint。\n",
    "# 但如果我们需要的数据量小于我们的样本量506，那我们可以采用np.random.choice来抽样，choice会随机抽取不重复的随机数，\n",
    "# 因此可以帮助我们让数据更加分散，确保数据不会集中在一些行中!\n",
    "#这里我们不采用np.random.choice,因为我们现在采样了3289个数据，远远超过我们的样本量506，使用np.random.choice会报错\n",
    " \n",
    "X_missing = X_full.copy()\n",
    "y_missing = y_full.copy()\n",
    " \n",
    "X_missing[missing_samples,missing_features] = np.nan\n",
    " \n",
    "X_missing = pd.DataFrame(X_missing)\n",
    "#转换成DataFrame是为了后续方便各种操作，numpy对矩阵的运算速度快到拯救人生，但是在索引等功能上却不如pandas来得好用\n",
    "X_missing.head()\n",
    "\n",
    "#并没有对y_missing进行缺失值填补，原因是有监督学习，不能缺标签啊\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "#使用均值进行填补\n",
    "from sklearn.impute import SimpleImputer\n",
    "imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')#实例化\n",
    "X_missing_mean = imp_mean.fit_transform(X_missing)#特殊的接口fit_transform = 训练fit + 导出predict\n",
    "#pd.DataFrame(X_missing_mean).isnull()#但是数据量大的时候还是看不全\n",
    "#布尔值False = 0， True = 1 \n",
    "# pd.DataFrame(X_missing_mean).isnull().sum()#如果求和为0可以彻底确认是否有NaN\n",
    "\n",
    "#使用0进行填补\n",
    "imp_0 = SimpleImputer(missing_values=np.nan, strategy=\"constant\",fill_value=0)#constant指的是常数\n",
    "X_missing_0 = imp_0.fit_transform(X_missing)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     0\n",
       "1     0\n",
       "2     0\n",
       "3     0\n",
       "4     0\n",
       "5     0\n",
       "6     0\n",
       "7     0\n",
       "8     0\n",
       "9     0\n",
       "10    0\n",
       "11    0\n",
       "12    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_missing_reg = X_missing.copy()\n",
    "\n",
    "#找出数据集中，缺失值从小到大排列的特征们的顺序，并且有了这些的索引\n",
    "sortindex = np.argsort(X_missing_reg.isnull().sum(axis=0)).values#np.argsort()返回的是从小到大排序的顺序所对应的索引\n",
    " \n",
    "for i in sortindex:\n",
    "    \n",
    "    #构建我们的新特征矩阵（没有被选中去填充的特征 + 原始的标签）和新标签（被选中去填充的特征）\n",
    "    df = X_missing_reg\n",
    "    fillc = df.iloc[:,i]#新标签\n",
    "    df = pd.concat([df.iloc[:,df.columns != i],pd.DataFrame(y_full)],axis=1)#新特征矩阵\n",
    "    \n",
    "    #在新特征矩阵中，对含有缺失值的列，进行0的填补\n",
    "    df_0 =SimpleImputer(missing_values=np.nan,strategy='constant',fill_value=0).fit_transform(df)\n",
    "                        \n",
    "    #找出我们的训练集和测试集\n",
    "    Ytrain = fillc[fillc.notnull()]# Ytrain是被选中要填充的特征中（现在是我们的标签），存在的那些值：非空值\n",
    "    Ytest = fillc[fillc.isnull()]#Ytest 是被选中要填充的特征中（现在是我们的标签），不存在的那些值：空值。注意我们需要的不是Ytest的值，需要的是Ytest所带的索引\n",
    "    Xtrain = df_0[Ytrain.index,:]#在新特征矩阵上，被选出来的要填充的特征的非空值所对应的记录\n",
    "    Xtest = df_0[Ytest.index,:]#在新特征矩阵上，被选出来的要填充的特征的空值所对应的记录\n",
    "    \n",
    "    #用随机森林回归来填补缺失值\n",
    "    rfc = RandomForestRegressor(n_estimators=100)#实例化\n",
    "    rfc = rfc.fit(Xtrain, Ytrain)#导入训练集进行训练\n",
    "    Ypredict = rfc.predict(Xtest)#用predict接口将Xtest导入，得到我们的预测结果（回归结果），就是我们要用来填补空值的这些值\n",
    "    \n",
    "    #将填补好的特征返回到我们的原始的特征矩阵中\n",
    "    X_missing_reg.loc[X_missing_reg.iloc[:,i].isnull(),i] = Ypredict\n",
    "\n",
    "#检验是否有空值\n",
    "X_missing_reg.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "#对所有数据进行建模，取得MSE结果\n",
    " \n",
    "X = [X_full,X_missing_mean,X_missing_0,X_missing_reg]\n",
    " \n",
    "mse = []\n",
    "std = []\n",
    "for x in X:\n",
    "    estimator = RandomForestRegressor(random_state=0, n_estimators=100)#实例化\n",
    "    scores = cross_val_score(estimator,x,y_full,scoring='neg_mean_squared_error', cv=5).mean()\n",
    "    mse.append(scores * -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('Full data', 21.62860460743544),\n",
       " ('Zero Imputation', 40.84405476955929),\n",
       " ('Mean Imputation', 49.50657028893417),\n",
       " ('Regressor Imputation', 20.959585267967373)]"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[*zip(['Full data','Zero Imputation','Mean Imputation','Regressor Imputation'],mse)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyIAAAGDCAYAAADXkqQ8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3XucXVV99/HPV2INQlqKRCuopCIVFTVgoOIF8caj9QaI9YIXrBfsU6s+LfTxUq3gvbZafflUgzeoFbFWqBRpEUUuKiIBAqGAtggRETGoSKCAQn7PH3uNHqaZzAzMrBOTz/v1mtecs/fae//2Ohvd37PWnqSqkCRJkqSe7jLuAiRJkiRtfgwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISNJmJslBSb407jpmIsnCJJXkPndw+1OTPHeu65pvSY5K8hcbWP/uJB/rWZMkzTWDiCTdAUmuSPKkMRz34CRfm0X7Je1GfsHEsqr6dFXtO8d1HZTkhvZzU5J1I+9vmMtjzUZVPaGqPjuu499RVXVwVf01QJKnJPmvO7qvkTB3Y/s8rk3yqSSL7kyNSXZJcuud2cc0+z82yS1J1rafC5O8LcnWs9jHD5M8Zr5qlHTnGEQkSXdaCzdbV9XWwFOBH0y8b8s0fg9sn8UDgB2AN425npl4W1UtAhYDrwAeD5yZZOF4y5I0FwwiknQntVGKryd5f5Lrknw3yaPa8iuT/CjJS0baH5XkI0lOad/0np5kx7buf4xgJDktycuTPAj4CLBX+2b7urb+aUnOT3J9O95bR8o7o/2+rm2z1+RRlVbrOUl+1n4/atKx39bOb22SLyXZ7g72032TfKF9I//dJK8aWbcgyV+15de3On5nZPOnJrksyU+TvH9ku1cl+UqSD7a+v2x0pCrJN5O8cOQYH0jy4yT/leRPR7/Rn/zt+eTpT0kem+Tsdpzzkjx6ZN0r2ijZ2nYOz1nP+S9KcnOS32zv396+8d+yvf+bJO9ur49N8pdJ7gEcD9x/ZITpHm2XWyb5zMhowdKZfA5VdR1wIvDgkdrul+SkJD9J8p1J1+ujR66vHyZ5V1t1BrDFSF27JdkiyeFJvpfkmiSfSBt5SRtBSfLSJN9PsibJYTOs+eaqOht4BnAfYOIz3aVdoz9p+zt65HifA+4JfKnV95p2DXy+1XZdkq8meeBMapA09wwikjQ3fh+4ELgHcAxwLLAHw7fPLwQ+lNtPKTkIeBuwHbAS+PR0B6iqS4BXAWe1kYZt2qobgRcD2wBPA/44yX5t3d7t9zZtm7NG95lkW+CLwAdb7e8DvjhyswvwAuClDDd1vwEcOl2tkyXZAjgJ+AawPfAU4I1JHteavAHYD9i3nccrgZtHdvFUYDdgd+ClSfYZWbc3sKLV/yFgqmcnXg08AXgosBcw42dHkiwB/oVhFGFb4C+Bf0ny20l+G3gv8MT27f1jgYsm76Oq1jJcI48dqfv7wCNH3p8+aZsfA/sD3x0ZYfpxW70/8AmG/voK8HczPJd7AM8Evjmy+HPAt4F7M3ze7x8JWh8C3llVvwns3Pphot7bRuo6HzgE+MN2jjszXDPvGznOFsAyhv8u/gB4R5L7z6RugKr6KfBVftWHAEcAv8PwuT6QNtJTVc8BfgTs2+r7YGt/ArBT2+ZS4OiZHl/S3DKISNLcuLyqPllVtwGfBe4LHFFVt1TVl4CfM9x8TfhiVZ1RVbcw3DjtleS+d+TAVXVaVa2qqnVVdSHwGeBx023XPA34z6r6VFXdWlWfYbg5e8ZIm09W1Xeq6ibgn4AZffM+yWOAhVX1nqr6eVV9B/gk8Ly2/uXA66vqv9p5nN++uZ/wzqq6vqouZ/gmfrSGb1fVP7S+PxrYMck2/E9/CPxtVf2gqtYAfz2L+l8CHFdVX271nQRczBCcJuyaZGFVXdVC4/qcDjwuyd0YbtQ/3N4vAh4GfH0WNZ1aVae08/4U038u/5FhFG0NQwD+OECSnYGHA29s1+sKhn58UdvuF8DvJblHVa1tIxNTOQh4b1WtrqrrGa7tg5JkpM1ftRGOcxiutYfN4pwBfsAQBqmqS6vq1HZN/ZAhjE157bdr/OiquqGqbgYOB/aMU72ksTCISNLcuGbk9U0AVTV52eiIyJUTL6rqBuAnDCMFs5bk99sUkzVJfsYwajLT6VPbA6snLVvN8AzBhB+OvP5vbn8eM7UjsKRNh7mu3RD/GfA77SZ1B+CyDWy/oRomr2OKGrdnpN/5n+e9ITsCL5xU/zJg+/Yt/UHAa4AfJjkhyQOm2M/pwD4MI2grgFMZbpwfDaxqN+8zNdvP5SFtFG0h8A/AGUl+g6Ff1rSgOWH0GngJQ1j4Tpua9r82cIzJ19NqYEtacGAYQbl2lnVPtgPDfy8k2T7J55JcleR6htGwKa/9NjXrb9r0uesZglAYRtMkdWYQkaTx+OXoR5uytS3DN703tsV3H2k7+qxErWdfxzBMN7lvVf0Ww3Mk2UD7UT9guMkedT/gqmm2m60rgUurapuRn0VVtX9VVTveTnN8zMmuZqTfGc5z1I1M3e9XAh+bVP9WVfV+gKr6YlU9keFG/HsMIx3rcybD6MPTGELJSmAXhpGV06fYZrrPcFaq6ucMoyG/135+ACyeeFal+eU1UFWXVNVzGaZZfRA4rgWY9dU1+Xq6H0MI/8lc1N5GuvZh6EcYpsTdCOzapo69nF9d+6ynxpcy9PXjgd9i6HsmbSOpE4OIJI3HHyR5TLuhextwdlVd2aYMXcXw7fsWSf6I29+gXwPcp203YRHwk6q6OcmeDHP8J6wB1gFTzcM/iWHazQvat8XPZXiI+cQ5Octf+RpAktdl+HOyC5I8LMnubf3HgHcmuX8Gu00xverO+Cfg/yS5d4YH7if/Ox0rgee32h4JPGtk3dHAc5I8sX0uW7bXv5Nkhwx/MODuwC3ADcBt6yugqn4G/Afwx8DpVbWOYWTk5UwdRK4B7plZ/NnaDcnwhxAObnWuBv6L4dmVtye5W/tMXkJ7binJi9u0rNuAnzHc3K9jeP5iiySjge4zwKEZHn5fBLwdOKaFzTtT88J2bX+BIez8Y1u1qJ3H9a2OP5u06TXc/tpfxPDs0Y+BrVp9ksbEICJJ43EM8FcM3xQ/gmFqz4RXAIcx3Cw9hOEB7wmnMtzI/jDJxBSX/w0ckWQt8BaGG24Aquq/gXcAX29Tih45sq+Jh6GfDvx5O95fAE+fNH3mTquqXzA8nPwohpvfNQyjBhM31+9meGj+VOB6hlGdu81lDQwPXZ/J0H9nM9JPzRsZHni+juHh+WNH6v8u8GyGZwqubefwWob/H92itf8hQx/uAfzpBuo4neEb+PNG3m9FC2vrcQHDiNfq9hluO0W76Xw7w7/p8hOG52We1Z75qPb+we0cPgscVlUTow5Pb9uuBd4F/GF71uKnDM/ZnNvqWsrwmR7HcM1e1o41ORzMxpvbca9leDD/68Bj2/MdMFzvj2EISMcDn5+0/TsYHoi/LsmrGUaC1rTzXMXUfS6pg9zJLykkSbOU5Cjg+1X1l+OuZXOWZBfgoqpaMG1jSdKcc0REkiRJUncGEUmSJEndOTVLkiRJUneOiEiSJEnqziAiSZIkqTv/UshmYrvttqslS5aMuwxJkiRtws4999xrq2rxTNoaRDYTS5YsYcWKFeMuQ5IkSZuwJKtn2tapWZIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4WjLsAdXLjavjWIeOuYv32XD7uCiRJktSZIyKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpu2mDSJLbkqxMclGSf02yTY/C5lOSo5IcOM/H2C/Jg2fbLskRSZ40n7VJkiRJ4zaTEZGbqmppVe0K/AT4k7k4cJIFc7GfGR5ri17HGrEfMG0Qmdyuqt5SVV+et6okSZKkjcBsp2adBeww8SbJYUnOSXJhksNHlr85yaVJTknymSSHtuWnJXlnktOB1yZZnOTzbR/nJHl0a/e4NgqzMsn5SRYluXeSM0ZGZx7b2j4/yaq27D0jNdzQRhfOBvaa6oSSXNFqOivJiiS7Jzk5yWVJXtXa7NOOfXySi5N8JMldJo4zsq8D22jLo4BnAu9t9e6U5BXtHC9o53z3Kdr9crQmyRPb+a9K8okkdxup+fAk57V1u8zyc5QkSZLGasZBpI0qPBE4ob3fF9gZ2BNYCjwiyd5JlgHPBnYDDgCWTdrVNlX1uKr6W+ADwPurao+2zcdam0OBP6mqpcBjgZuAFwAnt2UPB1Ym2R54D/CEVsMeSfZr+9gKuKiqfr+qvjbN6V1ZVXsBZwJHAQcCjwSOGGmzJ/DnwEOBndq5rVdVfaP102FtNOky4Liq2qOqHg5cArxsinYAJFnYanluVT0UWAD88chhrq2q3YEPt/6SJEmSfm3MJIhsmWQl8GNgW+CUtnzf9nM+cB6wC0MweQzwhaq6qarWAv86aX+fHXn9JOBDbf8nAL+ZZBHwdeB9SV7DEFxuBc4BXprkrcBD2773AE6rqjWtzaeBvdu+bwM+P8N+OKH9XgWcXVVrq2oNcPPIMzHfqqrvVtVtwGfaec7GrknOTLIKOAh4yDTtHwhcXlXfae+P5lfnBnBc+30usGR9O0jyyjbKs2LNdTfPslxJkiRp/sz4GRFgR+A3+NUzIgHe1b7JX1pVD6iqj7flG3LjpOPvNbKPHVoIeDfwcmBL4JtJdqmqMxhuxK8CPpXkxdMc6+YWGmbilvZ73cjrifcTz7LUpG1qPcsXbuAYRwGvbqMbh0/TFqbvx4k6bxup8fYFVh1ZVcuqatnibaY7nCRJktTPjKdmVdXPgNcAhya5K3Ay8EdJtgZIskOSewJfA56RZGFb97QN7PZLwKsn3iRZ2n7vVFWrquo9wApglyQ7Aj+qqo8CHwd2B84GHpdkuzZ17PnA6TM9p1naM8nvtmdDnstwngDXJHlQW77/SPu1wKKR94uAq1vfHbSBdhMuBZYkeUB7/yLm79wkSZKkrmb1sHpVnQ9cADyvqr4EHAOc1aYb/TOwqKrOYZjqdAHD9KEVwM+m2OVrgGXtYfeLgVe15a9rD59fwPB8yL8B+zA8F3I+w/MkH6iqq4E3AF9txzuvqr4wm3OahbOAdwMXAZcDx7flrwdOBE4Frh5pfyxwWHvYfCfgzQzB6RSGkDFVOwCq6mbgpcDnWv+uAz4yHycmSZIk9ZaqyTOO5mCnydZVdUOSuwNnAK+sqvPm/ECdJNkHOLSqnj7uWu6oZQ9aXCuOnvL5+vHac/m4K5AkSdIcSHJuVU3+Y1XrNV//lseRGf6RvoXA0b/OIUSSJEnS3JuXIFJVL5iP/Y5LVZ0GnDbmMiRJkqRNxmz/QUNJkiRJutMMIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpuwXjLkCdbLUj7Ll83FVIkiRJgCMikiRJksbAICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpuwXjLkB9rF4Nhxwy7iokSZL6Wb583BVoQxwRkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd2NNYgkqSSfGnm/IMmaJCfO83GPSnLgPB9jvyQPnm27JEckedJ81iZJkiSN27hHRG4Edk2yZXv/ZOCqMdYzl/YDpg0ik9tV1Vuq6svzVpUkSZK0ERh3EAH4N+Bp7fXzgc9MrEiyVZJPJDknyflJntWWL0lyZpLz2s+j2vJ9kpyW5J+TXJrk00myoYMnuSLJO5OclWRFkt2TnJzksiSvGtnvGUmOT3Jxko8kuUtbd8PIvg5soy2PAp4JvDfJyiQ7JXlFO48Lknw+yd2naPfL0ZokT2znvar1w91Gaj68nfuqJLvMySchSZIkdbIxBJFjgeclWQg8DDh7ZN2bgFOrag/g8Qw37FsBPwKeXFW7A88FPjiyzW7A6xhGGe4PPHoGNVxZVXsBZwJHAQcCjwSOGGmzJ/DnwEOBnYADptpZVX0DOAE4rKqWVtVlwHFVtUdVPRy4BHjZFO0AaP1xFPDcqnoosAD445HDXNvO/8PAoTM4R0mSJGmjMfYgUlUXAksYRkNOmrR6X+D1SVYCpwELgfsBdwU+mmQV8DluPwXqW1X1/apaB6xs+57OCe33KuDsqlpbVWuAm5NsM7Lf71bVbQyjNo+Z1YkOU9DObDUfBDxkmvYPBC6vqu+090cDe4+sP679PpcpzjHJK9soz4qbb14zy3IlSZKk+bNg3AU0JwB/A+wD3GNkeYBnV9W3RxsneStwDfBwhjB188jqW0Ze38bMznFim3WTtl83sn1N2qbWs3zhBo5xFLBfVV2Q5GCGc92QDU4p41d1TnmOVXUkcCTA4sXLJtcvSZIkjc3YR0SaTwBHVNWqSctPBv504jmPJLu15b8FXN1GPV4EbNGhxj2T/G57NuS5wNfa8muSPKgt33+k/Vpg0cj7RcDVSe7KMCIyVbsJlwJLkjygvX8RcPocnIckSZI0dhtFEGlTqT6wnlVvY5iGdWGSi9p7gL8HXpLkm8DvMfz1rfl2FvBu4CLgcuD4tvz1wInAqcDVI+2PBQ5rD5vvBLyZ4fmXUxhCxlTtAKiqm4GXAp9r07nWAR+ZjxOTJEmSekuVM3amk2Qf4NCqevq4a7mjFi9eVgccsGLcZUiSJHWzfPm4K9j8JDm3qpbNpO1GMSIiSZIkafOysTysvlGrqtMY/mqXJEmSpDngiIgkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKm7BeMuQH3suCMsXz7uKiRJkqSBIyKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpuwXjLkB9rP7Zag7510PGXYYkaTOw/BnLx12CpF8DjohIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKm7jSaIJNk/ycpJP+uSPHUejnVakmVzvd9Jxzg4yfazbZfkY0kePJ+1SZIkSeO20QSRqjq+qpZO/AB/D5wJnDyT7TPYaM4HOBiYNohMbldVL6+qi+epJkmSJGmjsDHduP9Skt8D3gK8qKrWtWWHJTknyYVJDm/LliS5JMnfA+cB903y/CSrklyU5D0zONYNSd6T5NwkX06yZxsx+W6SZ7Y2Byf5QpJ/T/LtJH81cvyLRvZ1aJK3JjkQWAZ8uo3sbJnkLa3+i5Ic2YLT+tr9crRmqnNpNb8jyQVJvpnkXnPT85IkSVIfG10QSXJX4Bjg0Kr6Xlu2L7AzsCewFHhEkr3bJg8E/qGqdgN+AbwHeEJrt0eS/aY55FbAaVX1CGAt8HbgycD+wBEj7fYEDmr7fc6GpnZV1T8DK4CD2gjPTcCHqmqPqtoV2BJ4+hTtJvph+w2cy1bAN6vq4cAZwCumOUdJkiRpo7LRBRHgbcB/VNWxI8v2bT/nM4x87MIQTABWV9U32+s9GELFmqq6Ffg0sDcb9nPg39vrVcDpVfWL9nrJSLtTqurHLSwcBzxmluf1+CRnJ1nFEC4eMk37DZ3Lz4ET2+tzJ9X5S0lemWRFkhU3/+zmWZYrSZIkzZ8F4y5gVJJ9gGcDu09eBbyrqpZPar8EuHFSu9n6RVVVe70OuAWgqtYlGe2fmrRdAbdy+zC3cH0HSLKQ4ZmXZVV1ZZK3TtV2dLMZ1nwbU3yOVXUkcCTA4p0XT65fkiRJGpuNZkQkyW8DnwReXFVrJ60+GfijJFu3tjskued6dnM28Lgk2yXZAng+cPoclfjkJNsm2RLYD/g6cA1wzyT3SHI34Okj7dcCi9rridBxbTuHA6do1+tcJEmSpLHamEZEXgXcE/hwcrvBgHdV1WeTPAg4q627AXghw2jAL1XV1UneAHyVYUThpKr6whzV9zXgU8ADgGOqagVAkiMYQsPlwKUj7Y8CPpLkJmAv4KMM072uAM7ZQLse5yJJkiSNVX41w0dTSXIww7SqV4+7ljtq8c6L64D3HTDuMiRJm4Hlz1g+fSNJm6Qk51bVjP69vo1mapYkSZKkzcfGNDVro1VVRzFMoZIkSZI0BxwRkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdbdg3AWojx1/a0eWP2P5uMuQJEmSAEdEJEmSJI2BQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0tGHcB6mT1ajjkkHFXMXeWLx93BZIkSboTHBGRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BpFpJLktycqRnyXTtL8iyXbt9Q0z2P9bkxw6TZv9kjx4NnVLkiRJG7MF4y7g18BNVbV0zDXsB5wIXDzmOiRJkqQ54YjIHZDk4CQfGnl/YpJ9ZrH9m5J8O8mXgQeOLH9FknOSXJDk80nunuRRwDOB97YRmZ3W124uz0+SJEmabwaR6W05Mi3r+Du7sySPAJ4H7AYcAOwxsvq4qtqjqh4OXAK8rKq+AZwAHFZVS6vqsvW1u7N1SZIkST05NWt6cz0167HA8VX13wBJThhZt2uStwPbAFsDJ0+xjxm1S/JK4JUA99t667mpXpIkSZoDjojcMbdy+75bOMvta4rlRwGvrqqHAodvYL8zaldVR1bVsqpatnjhbEuUJEmS5o9B5I65Alia5C5J7gvsOYttzwD2T7JlkkXAM0bWLQKuTnJX4KCR5WvbuunaSZIkSb8WnJp1x3wduBxYBVwEnDfTDavqvCSfBVYCq4EzR1a/GTi7LV/Fr8LHscBHk7wGOHAD7SRJkqRfC6maapaQNiXLFi+uFQccMO4y5s7y5eOuQJIkSZMkObeqls2krVOzJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLUnUFEkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkSZLU3YJxF6BOdtwRli8fdxWSJEkS4IiIJEmSpDEwiEiSJEnqziAiSZIkqTuDiCRJkqTuDCKSJEmSujOISJIkSerOICJJkiSpO4OIJEmSpO4MIpIkSZK6M4hIkiRJ6s4gIkmSJKk7g4gkSZKk7gwikiRJkroziEiSJEnqLlU17hrUQZI1wOo53u12wLVzvE9Nz34fD/t9POz38bDfx8e+Hw/7fe7sWFWLZ9LQIKI7LMmKqlo27jo2N/b7eNjv42G/j4f9Pj72/XjY7+ODzI8AAAAFbUlEQVTh1CxJkiRJ3RlEJEmSJHVnENGdceS4C9hM2e/jYb+Ph/0+Hvb7+Nj342G/j4HPiEiSJEnqzhERSZIkSd0ZRDQjSe6b5KtJLknyH0le25Zvm+SUJP/Zfv/2uGvdlGyg39+a5KokK9vPH4y71k1JkoVJvpXkgtbvh7flv5vk7Ha9fzbJb4y71k3JBvr9qCSXj1zvS8dd66YoyRZJzk9yYnvv9d7Bevrd632eJbkiyarWvyvaMu9nxsAgopm6FfjzqnoQ8EjgT5I8GHg98JWq2hn4SnuvuTNVvwO8v6qWtp+TxlfiJukW4AlV9XBgKfCUJI8E3sPQ7zsDPwVeNsYaN0VT9TvAYSPX+8rxlbhJey1wych7r/c+Jvc7eL338PjWvxN/stf7mTEwiGhGqurqqjqvvV7L8D+aOwDPAo5uzY4G9htPhZumDfS75lENbmhv79p+CngC8M9tudf7HNtAv2ueJbkP8DTgY+198Hqfd5P7XWPl/cwYGEQ0a0mWALsBZwP3qqqrYbhpBu45vso2bZP6HeDVSS5M8gmHkOdemy6xEvgRcApwGXBdVd3amnwfQ+Gcm9zvVTVxvb+jXe/vT3K3MZa4qfo74C+Ade39PfB672Fyv0/wep9fBXwpyblJXtmWeT8zBgYRzUqSrYHPA6+rquvHXc/mYj39/mFgJ4bpK1cDfzvG8jZJVXVbVS0F7gPsCTxofc36VrXpm9zvSXYF3gDsAuwBbAv83zGWuMlJ8nTgR1V17uji9TT1ep9DU/Q7eL338Oiq2h14KsOU573HXdDmyiCiGUtyV4ab4U9X1XFt8TVJ7t3W35vhW0zNofX1e1Vd027Y1gEfZbhR1jyoquuA0xie0dkmyYK26j7AD8ZV16ZupN+f0qYoVlXdAnwSr/e59mjgmUmuAI5lmJL1d3i9z7f/0e9J/tHrff5V1Q/a7x8BxzP0sfczY2AQ0Yy0+cIfBy6pqveNrDoBeEl7/RLgC71r25RN1e8T/2PZ7A9c1Lu2TVmSxUm2aa+3BJ7E8HzOV4EDWzOv9zk2Rb9fOnJzEIZ5217vc6iq3lBV96mqJcDzgFOr6iC83ufVFP3+Qq/3+ZVkqySLJl4D+zL0sfczY7Bg+iYSMHxz8yJgVZu/DfBG4N3APyV5GfA94Dljqm9TNVW/P7/9SccCrgAOGU95m6x7A0cn2YLhC5t/qqoTk1wMHJvk7cD5DCFRc2eqfj81yWKG6UIrgVeNs8jNyP/F630cPu31Pq/uBRw/5DwWAMdU1b8nOQfvZ7rzX1aXJEmS1J1TsyRJkiR1ZxCRJEmS1J1BRJIkSVJ3BhFJkiRJ3RlEJEmSJHVnEJEkbXaSVJJPjbxfkGRNkhPb+3slOTHJBUkuTnJSW74kyU1JVo78vHhc5yFJv878d0QkSZujG4Fdk2xZVTcBTwauGll/BHBKVX0AIMnDRtZdVlVL+5UqSZsmR0QkSZurfwOe1l4/H/jMyLp7A9+feFNVF3asS5I2CwYRSdLm6ljgeUkWAg8Dzh5Z9/+Ajyf5apI3Jdl+ZN1Ok6ZmPbZn0ZK0qXBqliRps1RVFyZZwjAactKkdScnuT/wFOCpwPlJdm2rnZolSXPAERFJ0ubsBOBvuP20LACq6idVdUxVvQg4B9i7d3GStCkziEiSNmefAI6oqlWjC5M8Icnd2+tFwE7A98ZQnyRtspyaJUnabFXV94EPrGfVI4APJbmV4Uu7j1XVOW0q105JVo60/URVfXDei5WkTUyqatw1SJIkSdrMODVLkiRJUncGEUmSJEndGUQkSZIkdWcQkSRJktSdQUSSJElSdwYRSZIkSd0ZRCRJkiR1ZxCRJEmS1N3/Bx3XgrtOWhBfAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_labels = ['Full data',\n",
    "            'Zero Imputation',\n",
    "            'Mean Imputation',\n",
    "            'Regressor Imputation']\n",
    "colors = ['r', 'g', 'b', 'orange']\n",
    " \n",
    "plt.figure(figsize=(12, 6))#画出画布\n",
    "ax = plt.subplot(111)#添加子图\n",
    "for i in np.arange(len(mse)):\n",
    "    ax.barh(i, mse[i],color=colors[i], alpha=0.6, align='center')#bar为条形图，barh为横向条形图，alpha表示条的粗度\n",
    "ax.set_title('Imputation Techniques with Boston Data')\n",
    "ax.set_xlim(left=np.min(mse) * 0.9,\n",
    "             right=np.max(mse) * 1.1)#设置x轴取值范围\n",
    "ax.set_yticks(np.arange(len(mse)))\n",
    "ax.set_xlabel('MSE')\n",
    "ax.set_yticklabels(x_labels)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import cross_val_score\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,\n",
       "       1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0,\n",
       "       1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0,\n",
       "       0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1,\n",
       "       1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0,\n",
       "       0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n",
       "       1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1,\n",
       "       1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0,\n",
       "       0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,\n",
       "       0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n",
       "       1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1,\n",
       "       1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1,\n",
       "       1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n",
       "       1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n",
       "       1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1,\n",
       "       1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = load_breast_cancer() \n",
    "data \n",
    "data.data.shape \n",
    "data.target\n",
    "rfc = RandomForestClassifier(n_estimators=100,random_state=90)\n",
    "score_pre = cross_val_score(rfc,data.data,data.target,cv=10).mean()#交叉验证的分类默认scoring='accuracy'\n",
    "score_pre\n",
    " \n",
    "#可以看到，乳腺癌数据集有569条记录，30个特征，单看维度虽然不算太高，但是样本量非常少。过拟合的情况可能存在。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9666925935528475"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rfc = RandomForestClassifier(n_estimators=100,random_state=90)\n",
    "score_pre = cross_val_score(rfc,data.data,data.target,cv=10).mean()#交叉验证的分类默认scoring='accuracy'\n",
    " \n",
    "score_pre\n",
    " \n",
    "#这里可以看到，随机森林在乳腺癌数据上的表现本就还不错，在现实数据集上，基本上不可能什么都不调就看到95%以上的准确率\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9684480598046841 41\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\"\"\"\n",
    "在这里我们选择学习曲线，可以使用网格搜索吗？可以，但是只有学习曲线，才能看见趋势\n",
    "我个人的倾向是，要看见n_estimators在什么取值开始变得平稳，是否一直推动模型整体准确率的上升等信息\n",
    "第一次的学习曲线，可以先用来帮助我们划定范围，我们取每十个数作为一个阶段，来观察n_estimators的变化如何\n",
    "引起模型整体准确率的变化\n",
    "\"\"\"\n",
    " \n",
    "#####【TIME WARNING: 30 seconds】#####\n",
    " \n",
    "scorel = []\n",
    "for i in range(0,200,10):\n",
    "    rfc = RandomForestClassifier(n_estimators=i+1,\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=90)\n",
    "    score = cross_val_score(rfc,data.data,data.target,cv=10).mean()\n",
    "    scorel.append(score)\n",
    "print(max(scorel),(scorel.index(max(scorel))*10)+1)\n",
    "plt.figure(figsize=[20,5])\n",
    "plt.plot(range(1,201,10),scorel)\n",
    "plt.show()\n",
    " \n",
    "#list.index([object])\n",
    "#返回这个object在列表list中的索引\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9719568317345088 39\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "scorel = []\n",
    "for i in range(35,45):\n",
    "    rfc = RandomForestClassifier(n_estimators=i,\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=90)\n",
    "    score = cross_val_score(rfc,data.data,data.target,cv=10).mean()\n",
    "    scorel.append(score)\n",
    "print(max(scorel),([*range(35,45)][scorel.index(max(scorel))]))\n",
    "plt.figure(figsize=[20,5])\n",
    "plt.plot(range(35,45),scorel)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"\\n有一些参数是没有参照的，很难说清一个范围，这种情况下我们使用学习曲线，看趋势\\n从曲线跑出的结果中选取一个更小的区间，再跑曲线\\nparam_grid = {'n_estimators':np.arange(0, 200, 10)}\\n \\nparam_grid = {'max_depth':np.arange(1, 20, 1)}\\n    \\nparam_grid = {'max_leaf_nodes':np.arange(25,50,1)}\\n    对于大型数据集，可以尝试从1000来构建，先输入1000，每100个叶子一个区间，再逐渐缩小范围\\n \\n有一些参数是可以找到一个范围的，或者说我们知道他们的取值和随着他们的取值，模型的整体准确率会如何变化，这\\n样的参数我们就可以直接跑网格搜索\\nparam_grid = {'criterion':['gini', 'entropy']}\\n \\nparam_grid = {'min_samples_split':np.arange(2, 2+20, 1)}\\n \\nparam_grid = {'min_samples_leaf':np.arange(1, 1+10, 1)}\\n    \\nparam_grid = {'max_features':np.arange(5,30,1)} \\n \\n\""
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"\n",
    "有一些参数是没有参照的，很难说清一个范围，这种情况下我们使用学习曲线，看趋势\n",
    "从曲线跑出的结果中选取一个更小的区间，再跑曲线\n",
    "param_grid = {'n_estimators':np.arange(0, 200, 10)}\n",
    " \n",
    "param_grid = {'max_depth':np.arange(1, 20, 1)}\n",
    "    \n",
    "param_grid = {'max_leaf_nodes':np.arange(25,50,1)}\n",
    "    对于大型数据集，可以尝试从1000来构建，先输入1000，每100个叶子一个区间，再逐渐缩小范围\n",
    " \n",
    "有一些参数是可以找到一个范围的，或者说我们知道他们的取值和随着他们的取值，模型的整体准确率会如何变化，这\n",
    "样的参数我们就可以直接跑网格搜索\n",
    "param_grid = {'criterion':['gini', 'entropy']}\n",
    " \n",
    "param_grid = {'min_samples_split':np.arange(2, 2+20, 1)}\n",
    " \n",
    "param_grid = {'min_samples_leaf':np.arange(1, 1+10, 1)}\n",
    "    \n",
    "param_grid = {'max_features':np.arange(5,30,1)} \n",
    " \n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9718804920913884"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整max_depth\n",
    " \n",
    "param_grid = {'max_depth':np.arange(1, 20, 1)}\n",
    " \n",
    "#   一般根据数据的大小来进行一个试探，乳腺癌数据很小，所以可以采用1~10，或者1~20这样的试探\n",
    "#   但对于像digit recognition那样的大型数据来说，我们应该尝试30~50层深度（或许还不足够\n",
    "#   更应该画出学习曲线，来观察深度对模型的影响\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=39\n",
    "                             ,random_state=90\n",
    "                            )\n",
    "GS = GridSearchCV(rfc,param_grid,cv=10)#网格搜索\n",
    "GS.fit(data.data,data.target)\n",
    " \n",
    "GS.best_params_#显示调整出来的最佳参数\n",
    " \n",
    "GS.best_score_#返回调整好的最佳参数对应的准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9718804920913884"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整max_features\n",
    " \n",
    "param_grid = {'max_features':np.arange(5,30,1)} \n",
    " \n",
    "\"\"\"\n",
    " \n",
    "max_features是唯一一个即能够将模型往左（低方差高偏差）推，也能够将模型往右（高方差低偏差）推的参数。我\n",
    "们需要根据调参前，模型所在的位置（在泛化误差最低点的左边还是右边）来决定我们要将max_features往哪边调。\n",
    "现在模型位于图像左侧，我们需要的是更高的复杂度，因此我们应该把max_features往更大的方向调整，可用的特征\n",
    "越多，模型才会越复杂。max_features的默认最小值是sqrt(n_features)，因此我们使用这个值作为调参范围的\n",
    "最小值。\n",
    " \n",
    "\"\"\"\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=39\n",
    "                             ,random_state=90\n",
    "                            )\n",
    "GS = GridSearchCV(rfc,param_grid,cv=10)\n",
    "GS.fit(data.data,data.target)\n",
    " \n",
    "GS.best_params_\n",
    " \n",
    "GS.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9718804920913884"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整min_samples_leaf\n",
    " \n",
    "param_grid={'min_samples_leaf':np.arange(1, 1+10, 1)}\n",
    " \n",
    "#对于min_samples_split和min_samples_leaf,一般是从他们的最小值开始向上增加10或20\n",
    "#面对高维度高样本量数据，如果不放心，也可以直接+50，对于大型数据，可能需要200~300的范围\n",
    "#如果调整的时候发现准确率无论如何都上不来，那可以放心大胆调一个很大的数据，大力限制模型的复杂度\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=39\n",
    "                             ,random_state=90\n",
    "                            )\n",
    "GS = GridSearchCV(rfc,param_grid,cv=10)\n",
    "GS.fit(data.data,data.target)\n",
    " \n",
    "GS.best_params_\n",
    " \n",
    "GS.best_score_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9718804920913884"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整min_samples_split\n",
    " \n",
    "param_grid={'min_samples_split':np.arange(2, 2+20, 1)}\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=39\n",
    "                             ,random_state=90\n",
    "                            )\n",
    "GS = GridSearchCV(rfc,param_grid,cv=10)\n",
    "GS.fit(data.data,data.target)\n",
    " \n",
    "GS.best_params_\n",
    " \n",
    "GS.best_score_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9718804920913884"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整Criterion\n",
    " \n",
    "param_grid = {'criterion':['gini', 'entropy']}\n",
    " \n",
    "rfc = RandomForestClassifier(n_estimators=39\n",
    "                             ,random_state=90\n",
    "                            )\n",
    "GS = GridSearchCV(rfc,param_grid,cv=10)\n",
    "GS.fit(data.data,data.target)\n",
    " \n",
    "GS.best_params_\n",
    " \n",
    "GS.best_score_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.005264238181661218"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rfc = RandomForestClassifier(n_estimators=39,random_state=90)\n",
    "score = cross_val_score(rfc,data.data,data.target,cv=10).mean()\n",
    "score\n",
    " \n",
    "score - score_pre\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
